/**
 * @description
 * Класс для работы со временем
 */
class Timestamp {
  /**
   * @description
   * Отдает время в unixtime
   *
   * @returns {number}
   *
   * @example
   *
   * Timestamp.unixtime
   * // 1668283743
   */
  static get unixtime() {
    return Math.floor(Date.now() / 1000);
  }

  /**
   * @description
   * Отдает unixtime в миллисекундах
   *
   * @returns {number}
   *
   * @example
   *
   * Timestamp.milliseconds
   * // 1668283704485
   */
  static get milliseconds() {
    return Date.now();
  }

  /**
   * @description
   * Отдает время UTC
   *
   * @returns {Date}
   *
   * @example
   *
   * Timestamp.date
   * // 2022-11-12T20:08:47.676Z
   */
  static get date() {
    return new Date();
  }

  /**
   * @description
   * Перевод времени в [unixtime](https://wikiless.tiekoetter.com/wiki/Unix_time)
   *
   * @param {Date | number} value
   * @returns {number}
   *
   * @example
   * Timestamp.toUnixtime(new Date())
   * // 1699035897
   *
   * Timestamp.toUnixtime(1699035937494)
   * // 1699035937
   */
  static toUnixtime(value) {
    return Math.floor(value / 1_000);
  }
}

module.exports = { Timestamp };
